____ _ _ _ _
| _ \ ___ | |_ (_) _ __ ___ __| | (_) __ _
| |_) | / _ \ | __| | | | '_ \ / _ \ / _| | | | / _ |
| _ < | __/ | |_ | | | |_) | | __/ | (_| | | | | (_| |
|_| \_\ \___| \__| |_| | .__/ \___| \__,_| |_| \__,_|
|_|
- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b
Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―
Bencode
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
top
Bencode bzw. als Verb bencoding ist ein Datenaustauschformat, welches fΓΌr das Filesharing-Protokoll BitTorrent entwickelt wurde.cite-ref-1[1] Es verwendet eine effiziente, ASCII-basierte Kodierung, kann aber BinΓ€rdaten enthalten. Insofern ist Bencode anders als Formate wie XML, JSON oder YAML nicht grundsΓ€tzlich menschenlesbar. Das Format unterstΓΌtzt vier Datentypen: Ganze Zahlen, Zeichenketten variabler LΓ€nge, Listen und assoziative Listen.cite-ref-2[2]
Bencode wird unter anderem in .torrent-Dateien (offiziell Metainfo-Dateien) verwendet.
Bencode ist ein recht einfaches Format mit einer strikten Definition. FΓΌr jeden Datensatz gibt es nur eine gΓΌltige Darstellung in Bencode. Dies vereinfacht das Parsing und die Implementierung. Allerdings wird zum Bearbeiten ein spezialisierter Editor benΓΆtigt, da Texteditoren wegen enthaltener BinΓ€rdaten im Allgemeinen nicht zur Bearbeitung geeignet sind.
Contents
β’ Format
β’ Zahlen
β’ Zeichenketten
β’ Listen
β’ Weblinks
β’ Einzelnachweise
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Format
Zahlen
Zahlen werden als i<zahl>e codiert. Dabei ist <zahl> die dezimale ASCII-Darstellung der Zahl. Negative Zahlen werden wie ΓΌblich mit einem vorangestellten Bindestrich (ASCII-Zeichen 45) ausgegeben. Bencode unterstΓΌtzt nur ganze Zahlen.
| Zahl | Bencode |
|---|---|
| β234 | i-234e |
| 0 | i0e |
| 29410 | i29410e |
Zeichenketten
Zeichenketten werden als <lΓ€nge>:<inhalt> ausgegeben. Dabei ist <lΓ€nge> die LΓ€nge, zur Basis 10, und <inhalt> die Zeichenkette an sich. Leere Zeichenketten werden mit der LΓ€nge Null ausgegeben. Zeichenketten haben keinen definierten Zeichensatz und kΓΆnnen auch binΓ€re Daten enthalten. In Metainfo-Dateien sind alle Texte UTF-8-kodiert.
| Zeichenkette | Bencode |
|---|---|
| (leere Zeichenkette) | 0: |
| Hallo Welt | 10:Hallo Welt |
Listen
Listen werden als l<inhalt>e ausgegeben. <inhalt> besteht aus den aneinandergereihten, bencodeten Elementen der Liste. Eine Liste kann eine Mischung unterschiedlicher Datentypen beinhalten (z. B. sowohl Zahlen als auch Zeichenketten). Eine leere Liste hat die Darstellung le.
| Liste | Bencode |
|---|---|
| [] | le |
| [595] | li595ee |
| [Hallo] | l5:Halloe |
| [-343, Hallo, 555, [], [5]] | li-343e5:Halloi555eleli5eee |
Assoziative Listen
Assoziative Listen (dictionaries) werden, Γ€hnlich wie normale Listen, in der Form d<inhalt>e ausgegeben. Dabei besteht der Inhalt aus aneinandergereihten SchlΓΌssel-Wert-Paaren. Die Paare mΓΌssen in lexikographischer Ordnung aufgefΓΌhrt sein, womit die Darstellung jeder assoziativen Liste eindeutig ist. Eine leere assoziative Liste wird als de ausgegeben.
| Assoziative Liste | Bencode |
|---|---|
| {} | de |
| {Name => Thomas, Alter => 34} | d5:Alteri34e4:Name6:Thomase |
Weblinks
β’ Spezifikation von Bencode als Teil der BitTorrent-Spezifikation (Abschnitt βbencodingβ)
β’ Torrent File Editor, ein Open-Source-Bearbeitungsprogramm fΓΌr Bencode-Daten
Einzelnachweise